home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr47 / sptdemo.zip / ESTADIS.PRG < prev    next >
Text File  |  1995-02-28  |  5KB  |  145 lines

  1. // ----------------------------------------------------------------------------
  2. // (c) 1,994 Juan Miguel Sosso Prieto - Todos los derechos reservados
  3. // Autor...: Juan Miguel Sosso
  4. // Proyecto: Contabilidad Personal
  5. // Módulo..: Estadísticas
  6. // Fecha...: Mon  23-05-94
  7. // Hora....: 15:48:14
  8.  
  9. #include "box.ch"
  10. #include "inkey.ch"
  11. #include "sptools.ch"
  12.  
  13. // ----------------------------------------------------------------------------
  14. // Calcula la media de ingresos y gastos por Mes
  15.  
  16. proc MedPorMes()
  17.  
  18.    local cTexto := "Mes          Ingreso   Gasto     Ahorro" + LINEA + ;
  19.                    "============ ========= ========= =========" + LINEA
  20.    local nIng   := 0
  21.    local nGas   := 0
  22.    local nSumIn := 0
  23.    local nSumGa := 0
  24.    local nMeses := 0
  25.    local nMes
  26.    local cMes
  27.    local nAno   := Year( Date() )
  28.  
  29.    if lInputBox( "Año a consultar:", @ nAno, "9999" )
  30.       if nAno < 1900
  31.          nAno += 1900
  32.       endif
  33.       Apunte->( DbSetOrder( 1 ) )  // dFECHA
  34.       Apunte->( DbSeek( CToD( "01-01-" + cStr( nAno ) ) ) )
  35.  
  36.       nMes = Month( Apunte->dFECHA )
  37.       cMes = cMonth( Apunte->dFECHA )
  38.  
  39.       while ! Apunte->( EoF() ) .and. Year( Apunte->dFECHA ) == nAno
  40.          if Month( Apunte->dFECHA ) == nMes
  41.             nIng += Apunte->nINGRESO
  42.             nGas += Apunte->nGASTO
  43.          else
  44.             cTexto += PadR( cMes + ":", 13 ) + Transform( nIng, "9,999,999" ) + ;
  45.                       Transform( nGas, " 9,999,999" ) + ;
  46.                       Transform( nIng - nGas, " 9,999,999" ) + LINEA
  47.  
  48.             nSumIn += nIng
  49.             nSumGa += nGas
  50.             nMeses++
  51.  
  52.             nMes = Month( Apunte->dFECHA )
  53.             cMes = cMonth( Apunte->dFECHA )
  54.             nIng = Apunte->nINGRESO
  55.             nGas = Apunte->nGASTO
  56.          endif
  57.  
  58.          Apunte->( DbSkip() )
  59.       enddo
  60.  
  61.       nSumIn += nIng
  62.       nSumGa += nGas
  63.       nMeses++
  64.  
  65.       cTexto += PadR( cMes + ":", 13 ) + Transform( nIng, "9,999,999" ) + ;
  66.                 Transform( nGas, " 9,999,999" ) + ;
  67.                 Transform( nIng - nGas, " 9,999,999" ) + LINEA
  68.       cTexto += "============ ========= ========= =========" + LINEA
  69.       cTexto += PadR( "Total:", 13 ) + Transform( nSumIn, "9,999,999" ) + ;
  70.                 Transform( nSumGa, " 9,999,999" ) + ;
  71.                 Transform( nSumIn - nSumGa, " 9,999,999" ) + LINEA
  72.       cTexto += PadR( "Media:", 13 ) + Transform( nSumIn / nMeses, "9,999,999" ) + ;
  73.                 Transform( nSumGa / nMeses, " 9,999,999" ) + ;
  74.                 Transform( ( nSumIn - nSumGa ) / nMeses, " 9,999,999" ) + LINEA
  75.  
  76.       cEditor( cTexto, .f., 19, 46, .t., "Media de ingr./gastos por mes" )
  77.  
  78.    endif
  79.  
  80. return
  81.  
  82. // ----------------------------------------------------------------------------
  83.  
  84. proc Estadistica()
  85.  
  86.    local cTexto        := ""
  87.    local nMes
  88.    local cMes
  89.    local nIngreso      := 0
  90.    local nGasto        := 0
  91.    local nGrup         := 0
  92.    local nAnio         := Year( Date() )
  93.    local nTotalIngreso := 0
  94.    local nTotalGasto   := 0
  95.  
  96.    BuscaGrupo( .t. )
  97.  
  98.    if LastKey() != K_ESC .and. lInputBox( "Año a consultar:", @ nAnio, "9999" )
  99.       cTexto += AllTrim( Grupo->cDESC ) + ":" + LINEA + LINEA
  100.  
  101.       Apunte->( DbSetOrder( 2 ) )
  102.       Apunte->( DbSeek( Str( Grupo->nGRUPO ) + Str( nAnio, 4 ) + "0101" ) )
  103. //nMsgBox( DToS( Apunte->dFECHA ) )
  104.  
  105.       nMes = Month( Apunte->dFECHA )
  106.       cMes = cMonth( Apunte->dFECHA )
  107.  
  108.       while Apunte->nGRUPO == Grupo->nGRUPO .and. ! Apunte->( EoF() ) .and. ;
  109.             Year( Apunte->dFECHA ) == nAnio
  110.          if nMes == Month( Apunte->dFECHA )
  111.             nIngreso      += Apunte->nINGRESO
  112.             nGasto        += Apunte->nGASTO
  113.             nTotalIngreso += Apunte->nINGRESO
  114.             nTotalGasto   += Apunte->nGASTO
  115.          else
  116.             cTexto += PadR( cMes, 10 ) + "   Ingresos: " + ;
  117.                       Transform( nIngreso, "999,999" ) + " Gastos: " + ;
  118.                       Transform( nGasto, "999,999" ) + LINEA
  119.  
  120.             nMes          = Month( Apunte->dFECHA )
  121.             cMes          = cMonth( Apunte->dFECHA )
  122.             nIngreso      = Apunte->nINGRESO
  123.             nGasto        = Apunte->nGASTO
  124.             nTotalIngreso += nIngreso
  125.             nTotalGasto   += nGasto
  126.        endif
  127.  
  128.         Apunte->( DbSkip() )
  129.       enddo
  130.  
  131.       if nMes > 0
  132.          cTexto += PadR( cMes, 10 ) + "   Ingresos: " + ;
  133.                    Transform( nIngreso, "999,999" ) + " Gastos: " + ;
  134.                    Transform( nGasto, "999,999" ) + LINEA + LINEA
  135.          cTexto += "      Total ingreso: " + Transform( nTotalIngreso, "9,999,999" ) + ;
  136.                    " Gasto:" + Transform( nTotalGasto, "9,999,999" ) + LINEA
  137.       endif
  138.  
  139.       cEditor( cTexto, .f., 18, 50, .t., "Estadística de ingr./gastos por grupo" )
  140.    endif
  141.  
  142. return
  143.  
  144. // ----------------------------------------------------------------------------
  145.